INTRODUCCIÓN A LA MEMORIA CACHE

Uno de los principales problemas de los sistemas computadores es la imposibilidad de la memoria de intercambiar información con el procesador al ritmo que éste puede procesarla. Si se observa como han evolucionado los rendimientos de ambos sistemas se puede comprobar que el crecimiento del rendimiento anual de las

memorias ha sido constante e igual al 7%, mientras que el de los procesadores fue del 35% anual hasta el año 86 fecha en la que aparecieron las primeras arquitecturas RISC y en la que el aumento del rendimiento paso al 55% anual.


Este salto se reduce con las jerarquías de memoria, destacando el nivel de la memoria cache que es una memoria rápida y pequeña situada entre el procesador y la memoria principal que almacena la información actualmente en uso de la memoria. La evolución del uso de caches ha sido muy importante. El primer computador que la usó fue el IBM 360/85 (1969). En 1980 casi ningún microprocesador utilizaba caches, mientras que en 1996 a menudo usaban dos niveles de memoria cache.




A continuación se estudia el modo de operación. Vamos a suponer una jerarquía de memoria compuesta por dos niveles, el superior la memoria cache y el inferior la memoria principal. Para estudiar el modo de operación de la memoria cache, debemos saber que la memoria principal y la cache se dividen en conjuntos de palabras de igual tamaño. A los conjuntos de la memoria principal los llamamos bloque y a los conjuntos de la cache los llamamos marcos de bloque (en ocasiones también se les llama líneas o slots).


Sabemos que en una jerarquía de memoria los datos que contiene el nivel superior de la misma (la cache) son un subconjunto de los datos de la memoria de nivel inferior. Además como la memoria cache es mucho más pequeña que la principal debe existir un flujo de información entre ambos niveles. El tamaño de la información que se intercambia es de un bloque de manera que los bloques de la memoria principal vienen a ocupar los marcos de bloque de la cache.





La forma de operar es la siguiente. La Unidad central de proceso genera una dirección de memoria. Con esta dirección se accede primero a la memoria cache, para comprobar si esta el dato solicitado. En el caso de que esto sea así, se produce un acierto de cache, y se envía el dato a la UCP, que a continuación genera la siguiente dirección.


En caso que no se encuentre en la memoria cache el dato buscado, se accede a la memoria principal y se trae a memoria cache todo el bloque que contiene el dato solicitado. A esto se le llama fallo de cache. A continuación se envía el dato de la cache a la UCP. En la siguiente figura se puede ver el flujo de esta operación. SE define la tasa de fallos como el tanto por ciento de accesos a memoria cache que son fallos.